﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace WordPaser
{
    public class Word2HtmlConvert
    {
        public static BaseResult Convert(string wordpath)
        {
            if (wordpath.Length ==0)
            {
                return new BaseResult() {  isSuccess = false, Message="params length error"};
            }

            if (!File.Exists(wordpath))
            {
                return new BaseResult() { isSuccess = false, Message = "file not exists" };
            }

            FileInfo f = new FileInfo(wordpath);

            string filename = f.Name.Replace(".docx", "").Replace(".doc", "");
            string htmlpath = Path.Combine( f.Directory.FullName,  f.Name.Replace("docx", "html").Replace("doc", "html"));


            try
            {
                Word.Application word = new Word.Application();
                word.Visible = false;
                Word.Document wordDocument = word.Documents.Open(wordpath, false, true);
                wordDocument.SaveAs(htmlpath, Word.WdSaveFormat.wdFormatHTML, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value
                    , Missing.Value, Missing.Value, Office.MsoEncoding.msoEncodingUTF8);//类型里面包含的类型都可以尝试转
                wordDocument.Close(Word.WdSaveOptions.wdSaveChanges, Word.WdOriginalFormat.wdWordDocument, Word.WdRoutingSlipStatus.wdNotYetRouted);
                word.Quit(Word.WdSaveOptions.wdSaveChanges, Word.WdOriginalFormat.wdWordDocument, Word.WdRoutingSlipStatus.wdNotYetRouted);

                word = null;
                GC.Collect();

                string str = string.Empty;
                using (StreamReader reader = new StreamReader(htmlpath, Encoding.GetEncoding("gbk")))
                {
                    str = reader.ReadToEnd();
                }
                string webpath = System.Configuration.ConfigurationSettings.AppSettings["webPath"].ToString();
                str = str.Replace(filename + ".files", webpath + filename + ".files");

                System.IO.File.WriteAllText(htmlpath, str, Encoding.UTF8);

                return new BaseResult() { isSuccess = true };
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }

            return new BaseResult() { isSuccess = true };
        }
    }
}
